
#ifndef IEQUATABLE_T_H
#define IEQUATABLE_T_H

// Riccsson includes.
#include "System/Object.h"

// using System.Runtime.InteropServices;

namespace Riccsson
{
	namespace System
	{
		namespace Collections
		{
			namespace Generic
			{
				// Summary:
				//     Defines a generalized method that a value type or class implements to create
				//     a type-specific method for determining equality of instances.
				//
				// Type parameters:
				//   T:
				//     The type of objects to compare.
				template<typename T> interface IEquatable
				{
					// Summary:
					//     Indicates whether the current object is equal to another object of the same
					//     type.
					//
					// Parameters:
					//   other:
					//     An object to compare with this object.
					//
					// Returns:
					//     true if the current object is equal to the other parameter; otherwise, false.
					virtual bool Equals(const T* other) const = 0;
				};
			}
		}
	}
}

#endif // IEQUATABLE_H